Abstract default column type in tables

ABSTRACT

Methods, systems, and computer-readable storage media for providing a table in a database system, the table including a column having a column data type set to an abstract data type, receiving a first data record to be added to the table, the first data record including a first data value to be included in the column, determining a first data type corresponding to a data type of the first data value, changing the column data type from the abstract data type to the first data type, receiving a second data record to be added to the table, the second data record including a second data value to be including in the column, determining a second data type corresponding to the data type of the second data value, and selectively changing the column data type to the second data type.

BACKGROUND

Some data platforms have strict requirements that must be fulfilled tocreate a new table in a database and/or to migrate data betweendatabases. For example, column data types must be explicitly providedbefore creating or migrating the table. Analyzing large datasets toidentify data types is a common prerequisite for creating or migratingtables. Users often need to spend a lot of time to manually checkdatabases to identify the appropriate data type for each column upontable creation or migration. In some cases, data types can be specificto particular platforms, so that migration can require conversion ofdata types from one format to a second format. The effort associatedwith data type identification and conversion can have a significantimpact on the time necessary to complete data tables creation ormigration, as well as underlying technical resources (e.g., processors,memory) used to perform such activities.

SUMMARY

Implementations of the present disclosure include computer-implementedmethods for determining data types within a data table. In someimplementations, actions include providing a table in a database system,the table including a column having a column data type set to anabstract data type, receiving a first data record to be added to thetable, the first data record including a first data value to be includedin the column, determining a first data type corresponding to a datatype of the first data value, changing the column data type from theabstract data type to the first data type, receiving a second datarecord to be added to the table, the second data record including asecond data value to be including in the column, determining a seconddata type corresponding to the data type of the second data value, andselectively changing the column data type to the second data type. Otherimplementations of this aspect include corresponding systems, apparatus,and computer programs, configured to perform the actions of the methods,encoded on computer storage devices.

These and other implementations can each optionally include one or moreof the following features: the operation of receiving a user request tocreate the table in the database system and in response to receiving theuser request, generating the table with the column data type set to theabstract data type; the table includes at least one column namecorresponding to the at least one column; the operation of determiningthat the second data type is compatible with the first data; theoperation of determining that the second data type is incompatible withthe first data type; and the operation of converting at least one of thefirst data type and the second data type to a standard data type.

The present disclosure also provides a computer-readable storage mediumcoupled to one or more processors and having instructions stored thereonwhich, when executed by the one or more processors, cause the one ormore processors to perform operations in accordance with implementationsof the methods provided herein.

The present disclosure further provides a system for implementing themethods provided herein. The system includes one or more processors, anda computer-readable storage medium coupled to the one or more processorshaving instructions stored thereon which, when executed by the one ormore processors, cause the one or more processors to perform operationsin accordance with implementations of the methods provided herein.

It is appreciated that methods in accordance with the present disclosurecan include any combination of the aspects and features describedherein. That is, methods in accordance with the present disclosure arenot limited to the combinations of aspects and features specificallydescribed herein, but also include any combination of the aspects andfeatures provided.

The details of one or more implementations of the present disclosure areset forth in the accompanying drawings and the description below. Otherfeatures and advantages of the present disclosure will be apparent fromthe description and drawings, and from the claims.

DESCRIPTION OF DRAWINGS

FIG. 1 depicts an example architecture that can be used to executeimplementations of the present disclosure.

FIGS. 2A-2D depict an example graphical user interface in accordancewith implementations of the present disclosure.

FIG. 3 depicts an example process that can be executed in accordancewith implementations of the present disclosure.

FIG. 4 is a schematic illustration of example computer systems that canbe used to execute implementations of the present disclosure.

Like reference symbols in the various drawings indicate like elements.

DETAILED DESCRIPTION

Implementations of the present disclosure are generally directed toimporting tables with unknown column data types. More particularly,implementations of the present disclosure are directed to automaticallyidentifying data types of columns of tables initiated with abstractdefault column types. Implementations can include actions of providing atable in a database system, the table including a column having a columndata type set to an abstract data type, receiving a first data record tobe added to the table, the first data record including a first datavalue to be included in the column, determining a first data typecorresponding to a data type of the first data value, changing thecolumn data type from the abstract data type to the first data type,receiving a second data record to be added to the table, the second datarecord including a second data value to be including in the column,determining a second data type corresponding to the data type of thesecond data value, and selectively changing the column data type to thesecond data type.

A challenge in importing tables is that some data platforms requireidentification of column data types before the data within the tablescan be imported. Accordingly, creating or migrating large tables (e.g.,with hundreds or thousands of columns) can require extensive periods oftime to manually check databases to identify the appropriate data typefor each column upon table creation or migration. As described infurther detail herein, implementations of the present disclosure addressthis challenge. For example, in accordance with implementations, tablescan be instantiated and updated by automatically determining a columndata type and selectively changing a column data type based on thedetermined column data type.

FIG. 1 depicts an example architecture 100 that can be used to executeimplementations of the present disclosure. In the depicted example, theexample architecture 100 includes one or more client devices 102, aserver system 104, and a network 106. The server system 104 includes oneor more server devices 108, at least one of the one or more serverdevices 108 including a database 112. In the depicted example, a user110 interacts with the client device 102. In an example context, theuser 110 can include a user, who interacts with an application that ishosted by the server system 104. Even though, not illustrated in FIG. 1,a plurality of users can interact with the application that is hosted bythe server system 104. For example, one or more users can interact withthe application that is hosted by the server system 104 to select datato add to a single table or to multiple tables created and stored withinthe database 112.

In some examples, the client device 102 can communicate with one or moreof the server devices 108 over the network 106. In some examples, theclient device 102 can include any appropriate type of computing devicesuch as a desktop computer, a laptop computer, a handheld computer, atablet computer, a personal digital assistant (PDA), a cellulartelephone, a network appliance, a camera, a smart phone, an enhancedgeneral packet radio service (EGPRS) mobile phone, a media player, anavigation device, an email device, a game console, or an appropriatecombination of any two or more of these devices or other data processingdevices.

In some implementations, the network 106 can include a large computernetwork, such as a local area network (LAN), a wide area network (WAN),the Internet, a cellular network, a telephone network (e.g., PSTN) or anappropriate combination thereof connecting any number of communicationdevices, mobile computing devices, fixed computing devices and serversystems.

In some implementations, each server device 108 includes at least oneserver and at least one data store. In the example of FIG. 1, the serverdevices 108 are intended to represent various forms of serversincluding, but not limited to a web server, an application server, aproxy server, a network server, and/or a server pool. In general, serversystems accept requests for application services and provides suchservices to any number of client devices (e.g., the client device 102)over the network 106. In some implementations, the server system 104 caninclude the database 112 configured to provide a central point throughwhich service-providers can manage and access data related to datamigration services.

In accordance with implementations of the present disclosure, the serversystem 104 can host applications including data migration, dataprocessing, and visualization of tables that can be displayed to theuser 110 on the client device 102. In some examples, data records arereceived by the server device 108 of the server system 104 to be addedto the table during a data migration and data update process. In someexamples, the client device 102 indicates, which portion of the datarecord to be migrated and can execute a data migration and visualizationsoftware that retrieves data from the server system 104 and generatesthe data migration and visualization. In some examples, the serversystem 104 executes data migration software that retrieves data from theserver system 104 and generates instructions that are provided to theclient device 102 to display data associated to the migration (e.g., thedata migration and visualization software is server-based and the clientdevice 102 functions as a client computing device).

In some implementations, software can be stored in memory of each of thecomputing devices to provide instructions to a processor (not shown) toperform various functions in accordance with implementations of thepresent disclosure. For example, the client device 102 can store andexecute software, such as an operating system and/or applicationprograms. Implementations of the present disclosure can also includecomputer executable instructions, such as program modules executable bya computing device. In some examples, program modules can be defined asroutines, programs, objects, components and/or data structures thatperform particular tasks and/or that implement particular abstract datatypes.

Continuing, data migration tools (data migration software) can beprovided to process and display data migrated to a particular database(e.g., database 112) that can be configured to require a definition ofcolumn data types to enable data migration. The database can be anin-memory database, data processing and application platform, whichincludes a database (DB) and an application service, where the databaseincludes an engine and a driver. Using software component structuresprovided by SAP SE of Walldorf, Germany as a non-limiting example, ahigh-level component can be SAP HANA, which in turn includes HANAdatabase (DB) and HANA extended application service (XS), where HANA DBincludes an online analytical processing (OLAP) engine and a DB driver.The migrated data can be visualized using a particular visualizationtool, such as SAP Lumira provided by SAP AG of Walldorf, Germany or anyother visualization tool. In some examples, the visualized data caninclude pre-migration data and/or migrated data. In some examples, thedata, that is to be migrated to the database and visualized on theclient device 102, can be retrieved over the network 106 from the serversystem 104 or from external databases. In some examples, data isautomatically retrieved (e.g. at particular intervals) or randomlyretrieved from one or more external sources and stored in the database112 of the server system 104. In some examples, the user 110 cangenerate instructions to retrieve the data for migration and analysis.In some examples, user 110 can include a private person, a serviceagency or a company.

In general, implementations of the present disclosure enable creationand modification of tables within databases. More particularly,implementations of the present disclosure enable creation of tableswithout specifying a column data type of data records to be added to thetable. For example, an abstract default column type is automaticallycreated for each column, and specific column data types can bedetermined automatically by processing data records to be inserted inthe table. In some examples, the tables can include one or more columns.For example, the tables can be a data cube, which is provided as anarray of data categorized into one or more dimensions. A data cube canbe a representation of a multi-dimensional spreadsheet (e.g., amulti-dimensional dataset including a plurality of data tables). In someexamples, a data cube includes a plurality of cells that are arranged ina structure including a plurality of rows and columns. The cells arepopulated with respective values (e.g., number, text) that cancorrespond to one or more data types (e.g., integer, string), which isassociated to the column data type.

Implementations of the present disclosure will be discussed in furtherdetail herein with reference to an example context. The example contextincludes business data (e.g., data reflecting operations of anenterprise). In the example context, an example data record can includea data object (DO) that includes data related to operations of anenterprise. It is contemplated, however, that implementations of thepresent disclosure are applicable in other contexts.

In accordance with implementations of the present disclosure, datarecords can be migrated to a database, by processing and adding the datarecords to tables generated with abstract column data types. In someimplementations, the migration process includes processing the data forinsertion into the table using a particular (e.g., standard) format anda particular (e.g., standard) data type. In some examples, a dimensionof a table (e.g., a column) corresponds to a category of stored data.Example dimensions can include product, quantities, time, and location.In some examples, each dimension can have one or more sub-dimensions.

In some implementations, the data types are associated to the one ormore sub-dimensions. For example, the product dimension can includesub-dimensions of category, and each sub-dimension of category caninclude sub-dimensions of line. As another example, the quantity caninclude sub-dimensions of quantities, and each sub-dimension ofquantities can be expressed as a fraction, as a percent, or as adecimal. The quantity, including sub-dimensions of quantities, can becharacterized by one or more data types, including a small integer, aninteger, a real or a float. As another example, the time dimension caninclude sub-dimensions of year, each sub-dimension of year can includesub-dimensions of quarter, each sub-dimension of quarter can includesub-dimensions of month, each sub-dimension of month can includesub-dimensions of week, and so on. The time can be expressed numerical,in date format, or as a number of days, weeks, month or years or it canbe expressed as text (e.g., name of month or day) or a combination oftext and numbers. The time, including sub-dimensions of time, can becharacterized by one or more data types, including a string, a char, asmall integer, an integer, a real or a float. As another example, thelocation dimension can include sub-dimensions of country, eachsub-dimension of country can include sub-dimensions of region (e.g.,north, east, west, south, mid-west), each sub-dimension of region caninclude sub-dimensions of sub-region (e.g., state, province), and eachsub-dimension of sub-region can include sub-dimensions of city. In someexamples, a table can include a plurality (e.g., tens, hundreds, orthousands) of dimensions.

As noted above, data stored in the data record includes one or morecolumns, each column including one or more data that are associated to aparticular data type. In some examples, each data is a fact (e.g., anumerical fact or a textual fact). In some examples, each data can becategorized into one or more dimensions. Example data can includespecific product sales data (e.g., quantity sold, revenue, and/or profitmargin, categorized by dimension). In short, measures can include anyappropriate business data that can be manipulated according to businesslogic to assist or support the business enterprise.

In accordance with implementations of the present disclosure, new datacan be added to a data record based on one or more rules. Moreparticularly, implementations of the present disclosure provide userinterfaces (UIs) that enable a user to identify data for migration. Insome examples, the identified data can be processed to be added to thedataset of the data record and each column data type can be updated tocorrectly reflect the category of all the data within the correspondingcolumn. An example of updated table through migration of data isdescribed with reference to FIGS. 2A-2D.

FIGS. 2A-2D depict a portion of an example graphical user interface(GUI) 200 for displaying a table used for migrating data. In someimplementations, the GUI 200 can be the interface displayed by thecomputing device 102, with which the user 110 is interacting, asdescribed with reference to FIG. 1.

In the example of FIGS. 2A-2D, the GUI 200 includes a number of choicespresented in a menu bar 202, such as create new table 204, select table206 and visualize 208, a display menu 210, a visualization menu 212, anoperations menu 212, and a display section 214. In the exampleillustrated in FIG. 2A, an empty table 220 with 3 columns 220 a, 220 b,220 c was created using the create new table menu 204 or thevisualization menu 212. In other examples, as illustrated in FIGS.2B-2D, a table including a data record can be selected using the choicetable 206. The selection can cause the migration and visualizationapplication to connect to the database over the network to enable a userto select an existent table stored in the database to be updated byadding a data record. The table 220 is displayed in the display section214.

The operations menu 212 includes an option to select a data record 216,a columns menu 218, and a mapping menu 222, associated with the data tobe displayed or currently displayed data. In some examples, the optionto select data record 216 includes a search box 224 that enablessearching of data records that can be used in data visualizations. Thecolumns menu 218 lists columns of the data record that are available fordata visualization. The columns menu 218 enables a user to add columnsby selecting the addition option 226 and to rearrange the order of thecolumns.

The selection of a data type can enable a user to select and modify acolumn data type in the fact table 220, as discussed in further detailherein. For example, the data type is selected by clicking on anddragging the data type from the mapping menu 222 to a column 220 a, 220b, 220 c of the table 220.

In the example depicted in FIG. 2A, before data is migrated, the table220 is illustrated as having empty columns that have abstract data types(e.g., data type_1 is an abstract data type, data type_2 is an abstractdata type, and data type_3 is an abstract data type). In the example ofFIG. 2B, the display section 214 includes the data visualization of atable 220 after the migration of a first row of data (e.g., {bike; 200;500}). In some examples, the data included in the table is automaticallyprocessed to identify the data types of the first row for each column.In some examples, the determined column data types are displayed withinthe operations menu 212, such as in the mapping menu 222 (e.g., datatype_1 is a string data type, data type_2 is an integer data type, anddata type_3 is an integer data type). In the example of FIG. 2C, thedisplay section 214 includes the data visualization of a table 220 afterthe migration of a second row of data (e.g., {car; 6600; 2000.5}). Insome examples, the data included in the table is automatically processedto identify the data types of the second row relative to the first rowfor each column. In some examples, if one or more of the determinedcolumn data types for the newly added data are incompatible with ordifferent from the previously determined data types, a new data typethat can match all of the data types within the respective column issearched. If a data type that matches all of the data types within therespective column is found the column data type can be automaticallyupdated. For example, the previously determined column data type ofcolumn 3 is integer. After adding, the second row to the table, the datatype of the second row at column 3 is determined as being a float. Thedata type float matches the data of the first raw on column 3 and thedata type of column 3 can be automatically updated to float. The updatedcolumn data types are displayed within the operations menu 212, such asin the mapping menu 222 (e.g., data type_1 is a string data type, datatype_2 is an integer data type, and data type_3 is a float data type).

In the example of FIG. 2D, the display section 214 includes the datavisualization of a table 220 after the migration of a third row of data(e.g., {truck; 3700; V8}). In some examples, the data included in thetable is automatically processed to identify the data types of the thirdrow relative to the previously identified data types (e.g., data typescorresponding to the first and second rows) for each column. In someexamples, if one or more of the determined column data types for thenewly added data are incompatible with the previously determined datatypes, a new data type that matches all of the data types within therespective column is searched. If no data type that can match all of thedata types within the respective column is found an alert interface 228is generated. The alert interface 228 includes a text box 230, whichindicates the cell with unmatched data types. In some implementations,the mapping menu 222 can indicate the cell with unmatched data types.For example, the mapping menu 222 can display updated or previouslydetermined column data types and an error for the column with unmatcheddata types (e.g., data type_1 is a string data type, data type_2 is aninteger data type, and data type_3 is an error). At least one of thealert interface 228 and the mapping menu 222 can enable a user to selecta matching data type or to correct the data displayed in the column thattriggered the alert.

FIG. 3 depicts an example process 300 that can be executed in accordancewith implementations of the present disclosure. In some examples, theexample process 300 can be provided by one or more computer-executableprograms executed using one or more computing devices (e.g., the serversystem 104 of FIG. 1). The example process 300 can be used forautomatically adding a data record to a table in a database.

A user request to create a table in a database is received (302). Theuser can be a registered user of the database or a new user of thedatabase. The request can include a size of the data record, including anumber of columns. In some examples, a column corresponds to a dimensionof the data record and a column data type corresponds to a value of thedata record. The user request can include a table name and column names,without explicitly defining any of the column data types. The columnnames can be processed to determine the number of columns. For example,the user request can be:

-   -   create table vehicle (name, amount, price);

In response to receiving the user request, a table can be created withthe provided number of columns and default (e.g., abstract) column datatypes (304). Data is received and added to the table (306). In someimplementations, the entire data is added to the table. In someimplementations, the data record is fragmented into portions (e.g.,based on rows) and it is added to the table portion by portion (e.g.,row by row).

In response to adding the data record, the data record is analyzed oneby one to determine a corresponding data type (308). Within the contextexample, analyzing the data values one by one per row can include:

Row 1:   ‘bike’: String   200: integer   500: integer Row 2:   ‘car’:String   66000: integer   20000.5: float

In some implementations, the data types can be mapped to standard datatypes specific to the database or the database management system storingthe table. For example, the data types of HANA database managementsystem, include: SMALLINT corresponding to a 16-bit signed integer(−32768−32767), INTEGER corresponding to a 32-bit signed integer, REALcorresponding to a single-precision 32-bit floating-point number incurrent database product and VARCHAR(100) for textual values. Within thecontext example, mapping the data values can include:

Row 1:   ‘bike’: String-> VARCHAR(100)   200: integer-> SMALLINT   500:integer-> SMALLINT Row 2:   ‘car’: String-> VARCHAR(100)   66000:integer-> INTEGER   20000.5: float-> REAL

In response to determining the data types of the added data, it isdetermined whether explicit data types are set for all columns (310). Ifone or more columns are determined as not having explicit data types(e.g., the table includes one or more columns with abstract defaultcolumn data types), explicit column data types are set (312). Columndata types can be set based on the data types of the first portion(e.g., first row) of the data added to the table. Within the contextexample, setting explicit column data types are can include:

Data type of column 1-> VARCHAR(100) Data type of column 2-> SMALLINTData type of column 3-> SMALLINT

In response to determining that the columns have explicit data types, itis determined whether the data types are compatible (314). Determiningcompatibility can include determining if the data types of an additionaldata record (e.g., row 2) per column is the same as the data types ofthe previous data record (e.g., row 1). In response to determining thatone or more cells of the additional data record are not compatible withthe corresponding the column data type it is determined whether amatching data type can be set (316). Within the context example, thedata type of row 2 for column 3 is REAL, which is different from thedata type of column 3, which was previously set to SMALLINT and settinga matching column data type for column 3 can include are can includeidentifying that data type REAL can characterize the data value of row 1at column 3.

In some implementations, determining whether a matching data type can beset can provide a plurality of data types that can match the data typesof the existent and the additional data record. In response todetermining a plurality of matching data types, the closest matchingdata type can be selected to upgrade the column data type. The closestmatching data type can be identified based on the associated memoryallocation, such that the data type of the plurality of matching datatypes with the lowest memory allocation requirement can be set as beingthe closest matching data type.

In response to determining that no matching data type can be found, analert can be generated (318). In response to determining that a matchingdata type was found, the matching data type can be used to automaticallyupgrade the column data type (320). Within the context example, the datatype of column 3 can be updated to REAL. In some implementations, acolumn can be upgraded a set number of times and if an upgrade exceedingthe set number of times would be required, an alert is generated (318).The alert can include a request to manually set the column data typeand/or to update (e.g., change or delete) the data value associated withthe alert.

In response to upgrading the column data type or in response todetermining that column data types are compatible for each column of thetable, data is inserted in the table (322). In some implementations, thetable with inserted data is displayed within a GUI (as illustrated inFIGS. 2A-2D). In some examples, the table with inserted data isdisplayed as a fact table including a plurality of columns with visibledata types. In some examples, the data migration is visualized as anupdated fact table that includes one or more columns corresponding to adimension and a column data type for each column of the table. Theprocess 300 can be repeated multiple times (e.g., each time a newportion of data is received for being added to a table), each time thedata being automatically processed to update the column data types.

Implementations of the present disclosure provide one or more of thefollowing example advantages. Implementations of the present disclosureenable users to easily and quickly create tables. Implementations do notrequire users to provide detailed column data types for differentdatabase products. Implementations of the present disclosure can be usedto automatically migrate data between multiple database platforms (e.g.,automatic extension of databases). Automatic migration is possible evenbetween databases that use different data formats and/or different datatypes. The data migration can be automatically executed by one or moreprocessors, requiring minimal manual input, leading to increasedprocessing speed.

Referring now to FIG. 4, a schematic diagram of an example computingsystem 400 is provided. The system 400 can be used for the operationsdescribed in association with the implementations described herein. Forexample, the system 400 may be included in any or all of the servercomponents discussed herein. The system 400 includes a processor 410, amemory 420, a storage device 430, and an input/output device 440. Thecomponents 410, 420, 430, 440 are interconnected using a system bus 450.The processor 410 is capable of processing instructions for executionwithin the system 400. In one implementation, the processor 410 is asingle-threaded processor. In another implementation, the processor 410is a multi-threaded processor. The processor 410 is capable ofprocessing instructions stored in the memory 420 or on the storagedevice 430 to display graphical information for a user interface on theinput/output device 440.

The memory 420 stores information within the system 400. In oneimplementation, the memory 420 is a computer-readable medium. In oneimplementation, the memory 420 is a volatile memory unit. In anotherimplementation, the memory 420 is a non-volatile memory unit. Thestorage device 430 is capable of providing mass storage for the system400. In one implementation, the storage device 430 is acomputer-readable medium. In various different implementations, thestorage device 430 may be a floppy disk device, a hard disk device, anoptical disk device, or a tape device. The input/output device 440provides input/output operations for the system 400. In oneimplementation, the input/output device 440 includes a keyboard and/orpointing device. In another implementation, the input/output device 440includes a display unit for displaying graphical user interfaces.

The features described can be implemented in digital electroniccircuitry, or in computer hardware, firmware, software, or incombinations of them. The apparatus can be implemented in a computerprogram product tangibly embodied in an information carrier (e.g., in amachine-readable storage device, for execution by a programmableprocessor), and method steps can be performed by a programmableprocessor executing a program of instructions to perform functions ofthe described implementations by operating on input data and generatingoutput. The described features can be implemented advantageously in oneor more computer programs that are executable on a programmable systemincluding at least one programmable processor coupled to receive dataand instructions from, and to transmit data and instructions to, a datastorage system, at least one input device, and at least one outputdevice. A computer program is a set of instructions that can be used,directly or indirectly, in a computer to perform a certain activity orbring about a certain result. A computer program can be written in anyform of programming language, including compiled or interpretedlanguages, and it can be deployed in any form, including as astand-alone program or as a module, component, subroutine, or other unitsuitable for use in a computing environment.

Suitable processors for the execution of a program of instructionsinclude, by way of example, both general and special purposemicroprocessors, and the sole processor or one of multiple processors ofany kind of computer. Generally, a processor will receive instructionsand data from a read-only memory or a random access memory or both.Elements of a computer can include a processor for executinginstructions and one or more memories for storing instructions and data.Generally, a computer can also include, or be operatively coupled tocommunicate with, one or more mass storage devices for storing datafiles; such devices include magnetic disks, such as internal hard disksand removable disks; magneto-optical disks; and optical disks. Storagedevices suitable for tangibly embodying computer program instructionsand data include all forms of non-volatile memory, including by way ofexample semiconductor memory devices, such as EPROM, EEPROM, and flashmemory devices; magnetic disks such as internal hard disks and removabledisks; magneto-optical disks; and CD-ROM and DVD-ROM disks. Theprocessor and the memory can be supplemented by, or incorporated in,ASICs (application-specific integrated circuits).

To provide for interaction with a user, the features can be implementedon a computer having a display device such as a CRT (cathode ray tube)or LCD (liquid crystal display) monitor for displaying information tothe user and a keyboard and a pointing device such as a mouse or atrackball by which the user can provide input to the computer.

The features can be implemented in a computer system that includes aback-end component, such as a data server, or that includes a middlewarecomponent, such as an application server or an Internet server, or thatincludes a front-end component, such as a client computer having agraphical user interface or an Internet browser, or any combination ofthem. The components of the system can be connected by any form ormedium of digital data communication such as a communication network.Examples of communication networks include, for example, a LAN, a WAN,and the computers and networks forming the Internet.

The computer system can include clients and servers. A client and serverare generally remote from each other and typically interact through anetwork, such as the described one. The relationship of client andserver arises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

In addition, the logic flows depicted in the figures do not require theparticular order shown, or sequential order, to achieve desirableresults. In addition, other steps may be provided, or steps may beeliminated, from the described flows, and other components may be addedto, or removed from, the described systems. Accordingly, otherimplementations are within the scope of the following claims.

A number of implementations of the present disclosure have beendescribed. Nevertheless, it will be understood that variousmodifications may be made without departing from the spirit and scope ofthe present disclosure. Accordingly, other implementations are withinthe scope of the following claims.

What is claimed is:
 1. A computer-implemented method for determiningdata types within a table, the method being executed by one or moreprocessors and comprising: providing, by the one or more processors, thetable in a database system, the table comprising at least one columnhaving a column data type set to an abstract data type corresponding toan original default data format of the at least one column, the tablebeing generated without predefining the column data type of data recordsto be added to the table, the database system being configured torequire a definition of column data types different from the abstractdata type to enable data migration; receiving, by the one or moreprocessors, a first data record to be added to the table, the first datarecord comprising a first data value to be included in the at least onecolumn; determining, by the one or more processors, a first data type,the first data type corresponding to a data type of the first datavalue; changing, by the one or more processors, the column data typefrom the abstract data type to the first data type enabling datamigration; receiving, by the one or more processors, a second datarecord to be added to the table, the second data record comprising asecond data value to be included in the at least one column;determining, by the one or more processors, a second data type, thesecond data type corresponding to the data type of the second datavalue; and selectively upgrading, by the one or more processors, basedon a compatibility of the first data type with the second data type, thecolumn data type to a new data type matching all data type within the atleast one column.
 2. The computer-implemented method of claim 1, furthercomprising receiving, by the one or more processors, a user request tocreate the table in the database system.
 3. The computer-implementedmethod of claim 2, further comprising in response to receiving the userrequest, generating, by the one or more processors, the table with thecolumn data type set to the abstract data type.
 4. Thecomputer-implemented method of claim 1, wherein the table comprises atleast one column name corresponding to the at least one column.
 5. Thecomputer-implemented method of claim 1, further comprising determiningthat the second data type is compatible with the first data type.
 6. Thecomputer-implemented method of claim 1, further comprising determiningthat the second data type is incompatible with the first data type. 7.The computer-implemented method of claim 1, further comprisingconverting at least one of the first data type and the second data typeto a standard data type.
 8. A non-transitory computer-readable storagemedium coupled to one or more processors and having instructions storedthereon which, when executed by the one or more processors, cause theone or more processors to perform operations for determining data typeswithin a data table, the operations comprising: providing the table in adatabase system, the table comprising at least one column having acolumn data type set to an abstract data type corresponding to anoriginal default data format of the at least one column, the table beinggenerated without predefining the column data type of data records to beadded to the table, the database system being configured to require adefinition of column data types different from the abstract data type toenable data migration; receiving a first data record to be added to thetable, the first data record comprising a first data value to beincluded in the at least one column; determining a first data type, thefirst data type corresponding to a data type of the first data value;changing the column data type from the abstract data type to the firstdata type enabling data migration; receiving a second data record to beadded to the table, the second data record comprising a second datavalue to be included in the at least one column; determining a seconddata type, the second data type corresponding to the data type of thesecond data value; and selectively upgrading based on a compatibility ofthe first data type with the second data type, the column data type to anew data type matching all data type within the at least one column. 9.The non-transitory computer-readable storage medium of claim 8, whereinthe operations further comprise receiving a user request to create thetable in the database system.
 10. The non-transitory computer-readablestorage medium of claim 9, wherein the operations further comprise inresponse to receiving the user request, generating the table with thecolumn data type set to the abstract data type.
 11. The non-transitorycomputer-readable storage medium of claim 8, wherein the table comprisesat least one column name corresponding to the at least one column. 12.The non-transitory computer-readable storage medium of claim 8, whereinthe operations further comprise determining that the second data type iscompatible with the first data type.
 13. The non-transitorycomputer-readable storage medium of claim 8, wherein the operationsfurther comprise determining that the second data type is incompatiblewith the first data type.
 14. The non-transitory computer-readablestorage medium of claim 8, wherein the operations further compriseconverting at least one of the first data type and the second data typeto a standard data type.
 15. A system, comprising: a computing device;and a computer-readable storage device coupled to the computing deviceand having instructions stored thereon which, when executed by thecomputing device, cause the computing device to perform operations fordetermining data types within a data table, the operations comprising:providing the table in a database system, the table comprising at leastone column having a column data type set to an abstract data typecorresponding to an original default data format of the at least onecolumn, the table being generated without predefining the column datatype of data records to be added to the table, the database system beingconfigured to require a definition of column data types different fromthe abstract data type to enable data migration; receiving a first datarecord to be added to the table, the first data record comprising afirst data value to be included in the at least one column; determininga first data type, the first data type corresponding to a data type ofthe first data value; changing the column data type from the abstractdata type to the first data type enabling data migration; receiving asecond data record to be added to the table, the second data recordcomprising a second data value to be included in the at least onecolumn; determining a second data type, the second data typecorresponding to the data type of the second data value; and selectivelyupgrading based on a compatibility of the first data type with thesecond data type, the column data type to a new data type matching alldata type within the at least one column.
 16. The system of claim 15,wherein the operations further comprise receiving a user request tocreate the table in the database system.
 17. The system of claim 16,wherein the operations further comprise in response to receiving theuser request, generating the table with the column data type set to theabstract data type.
 18. The system of claim 15, wherein the tablecomprises at least one column name corresponding to the at least onecolumn.
 19. The system of claim 15, wherein the operations furthercomprise determining that the second data type is compatible with thefirst data type.
 20. The system of claim 15, wherein the operationsfurther comprise determining that the second data type is incompatiblewith the first data type.